package net.daoke.relation.model.domain;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.daoke.relation.enums.ProtocolEnum;
import org.springframework.data.neo4j.core.schema.RelationshipProperties;

/**
 * 网络关系实体类，表示主机之间的网络连接。
 * 该实体类使用@RelationshipProperties注解，表示它是一个关系属性。
 * 它包含三个属性：id、protocol、port和action，分别表示关系ID、协议类型、端口号和允许或拒绝。
 * 它还包含一个目标节点属性，表示关系指向的目标主机。
 * 该实体类还包含一个构造函数，用于初始化关系属性。
 * @author daoke
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@RelationshipProperties
public class NetworkRelation extends BaseEntity{

    //源主机的编号，用于标识源主机
    @Schema(description = "源节点的编号")
    private String sourceNo;

    //源主机的端口号
    @Schema(description = "源节点的端口号")
    private int sourcePort;

    //协议类型，例如TCP、UDP等
    @Schema(description = "协议类型")
    private ProtocolEnum protocol;

    //目标主机的编号，用于标识目标主机
    @Schema(description = "目标节点的编号")
    private String destinationNo;

    //目标主机的端口号
    @Schema(description = "目标节点的端口号")
    private int destinationPort;

}
